<?php
/**
 * @Descript:控制器基础类
 * @Last Modified by:   blue
 */
namespace app\common\controller;
use app\auth\model\Member;
use think\Lang;
use think\Request;
use think\Session;
use think\Validate;

class Curd
{
    protected $model;
    protected $modelName;
    Protected $request;
    //类里面引入jump类
    use \traits\controller\Jump;

    //构造函数,初始化模型, 一般在子控制中的构造方法中创建
     public function __construct(){
         //定义常量
         define('MODULE_NAME',lcfirst(\request()->module()));
         define('CONTROLLER_NAME',lcfirst(\request()->controller()));
         define('ACTION_NAME',lcfirst(\request()->action()));
         //加载多语言相应控制器对应字段
         Lang::setAllowLangList(['zh-cn','en-us']);
         if(isset($_COOKIE['think_var'])){
             $langField = $_COOKIE['think_var'];
         }else{
             $langField = config('default_lang');
         }
         Lang::load(APP_PATH . 'auth/lang/'.$langField.'/'.CONTROLLER_NAME.'.php');
         //模型初始化
//         $this->model=model('Curd');
         // if(method_exists($this,'isLogin'))
         if(method_exists(__CLASS__,'isLogin')){
             $this->isLogin();
         }
         // 验证权限
         if(method_exists(__CLASS__,'isAuth')){
             $this->isAuth();
         }
         //初始化成员属性
         if($this->modelName) $this->model=model($this->modelName);
         if(!$this->request){
             $this->request=Request::instance();
         }
     }

    //列表前置操作
    protected function beforeListC(){ }
    
    //列表控制器方法
    public function listC(){
        //定义前置方法
        method_exists(__CLASS__, 'beforeListC')&& $this->beforeListC();    
        $res=$this->model->show();
        // print_r($res['data']);
        // 如果查到数据,则分配变量
        isset($res['data'])&&\think\View::share('data',$res['data']);
        return view();
    }

    /**
     * 添加控制器前置操作
     */
    protected function beforeAddC(){ }
   
    //添加编辑控制器方法
    public function addC(){
        // 定义前置方法
        method_exists(__CLASS__,'beforeAddC')&& $this->beforeAddC();
	    if(Request::instance()->isPost()){
	    	$res=$this->model->add();
	    	($res['status']=='success')?$this->success($res['message'],'listC'):$this->error($res['message'],'listC');
	    }
        return view();
    }
   
    /**
     * 编辑控制器前置操作
     * 一般用来分配旧数据和关联表的数据
     * @param $where GET获取的id组合形式$where['id']
     */
    protected function beforeEditC(){ }
    
    /**
     * 编辑控制器
     */
    public function editC(){
        //定义前置方法
        method_exists(__CLASS__,'beforeEditC')&& $this->beforeEditC();
        //存储新的数据
        if(Request::instance()->isPost()){
            $res=$this->model->edit();
            // 根据返回状态,判断跳转位置和信息
            ($res['status']=='success')?$this->success($res['message'],'listC'):$this->error($res['message'],'listC');
        }
        return view();
    }

    //删除控制器方法
    public function delC(){
        $data=$this->request->param();
        $validate=new Validate(['ids'=>'require|token']);
        if(!$validate->batch()->check($data)){
            return json($validate->getError());
        }
        //调用模型
        $res=$this->model->del();
        return $res?returnJson('success','删除成功',$res):returnJson('error','操作失败');
    }

    // 硬删除数据返回接口

}
